////////////////////////////////////////////////////////////////////////
// Last svn revision: $Id:  $ 
////////////////////////////////////////////////////////////////////////
/// \class drow::MLC::AComplexOp
///
/// \brief   
///
/// \author Olivia Wasalski         <oliviawasalski@triumf.ca>
///
/// REVISION HISTORY:\n
/// 	22/03/12 : Olivia Wasalski - New File \n
///
/// \details 	
///
////////////////////////////////////////////////////////////////////////

#ifndef __drow_MLC_AComplexOp__
#define __drow_MLC_AComplexOp__

namespace drow {
namespace MLC {
    class Complex;

class AComplexOp {
public:
    virtual Complex ComplexConjugate( const Complex& a ) = 0;
    virtual Complex Add( const Complex& a, const Complex& b ) = 0;
    virtual Complex Subtract( const Complex& a, const Complex& b ) = 0;
    virtual Complex Multiply( const Complex& a, const Complex& b ) = 0;
    virtual double MagnitudeSquared( const Complex& a ) = 0;
    virtual double Magnitude( const Complex& a ) = 0;
    virtual double Angle( const Complex& a ) = 0;
};

} // namespace MLC
} // namespace drow

#endif // __drow_MLC_AComplexOp__

